查看原文
其他

线性回归的R实现与结果解读

吕琼 珠江肿瘤 2024-03-27

引言:前面我们学习了最小二乘法与直线回归{最小二乘法与线性回归},也学习了如何评判直线的拟合效果,以及拟合效果是否具有显著性{线性回归中的R方与R方显著性}。

接着我们来实战一下,主要了解一下R语言如何实现线性回归,以及尝试解释线性回归的结果。

1. 简单与多重线性回归的异同点

  • 1.1 简单线性回归与多重线性回归参数个数比较:

    • 同:二者均有一个结局变量(如小鼠体长)。

    • 异:简单线性回归仅有一个用于预测结局变量的变量(小鼠体重);但多重线性回归可有2个及以上用于预测结局变量的变量(小鼠体重和尾长)。

  • 1.2 计算简单线性回归和多重线性回归的R2的方法一致。但是对于多重简单线性回归,需要计算校正的R2以补偿方程中更多的参数。

  • 1.3 计算简单线性回归和多重线性回归的F值和p值的方法一致。

  • 对于左侧简单线性回归和右侧多重线性回归均有:

    • 不考虑小鼠体积与小鼠体重的关系时,SS(mean)为基于小鼠体重均值直线的残差平方和,p(mean)为均值直线的参数个数(即1个截距参数,对应参数个数为1)。

    • 考虑小鼠体积与小鼠体重的关系时,SS(fit)为基于拟合直线的残差平方和。

    • n,对应样本的个数。

  • 对于左侧的简单线性回归:

    • p(fit)为拟合直线的参数个数(即1个截距参数+1个斜率参数,对应总参数个数为2)。

  • 对于右侧的多重线性回归:

    • p(fit)为拟合直线的参数个数(即1个截距参数+多个斜率参数,此处有2个斜率参数,对应总参数个数为3)。

2. 简单与多重线性回归直接比较的意义

例如:在简单线性回归中,我们用小鼠的体重估计小鼠的身长(body length);而在多重线性回归中,我们用小鼠的体重和尾长(tail length)共同估计小鼠的身长。通过两种模型的比较,可以探究是否需要额外搜集尾巴长度这一数据?

演绎推理:拟合直线可以和均值直线(最简单的拟合直线)进行比较,那么两不同的拟合直线也能进行比较。

  • 在我们前面的讨论中,相对于预测数据(y轴数据)的均值直线,可以计算出拟合直线(简单线性回归或多重线性回归)的R2,即拟合直线所能解释的预测数据的变异百分比;此外,利用自由度,可以计算F值和P值,以探究拟合直线是否有显著性。
  • 同理:利用多重线性回归直线与简单线性回归的数据,可计算出相对于简单直线回归,多重线性回归所能解释的更多的变异,以及F值与p值。

在计算的过程中,我们仅需要将原来的均值直线替换成简单线性回归直线的数据,余处理方式不变,如下:

结论:以上的比较,是简单线性回归与多重线性回归的直接比较。

如果相对于简单线性回归,多重线性回归增加的R2非常大,且p值非常小,那么就可以说明新增变量(如小鼠尾长)意义重大。

相反,则说明新增变量毫无意义。

3. 简单线性回归 in R,数据来源于原视频

# 第一步:生成关于小鼠体重与体积的一组数据
mouse.data <- data.frame(
  weight=c(0.91.82.43.53.94.45.15.66.3),
  size=c(1.42.61.03.75.53.23.04.96.3))

mouse.data 
#   weight size
# 1    0.9  1.4
# 2    1.8  2.6
# 3    2.4  1.0
# 4    3.5  3.7
# 5    3.9  5.5
# 6    4.4  3.2
# 7    5.1  3.0
# 8    5.6  4.9
# 9    6.3  6.3

# 第二步:绘制散点图,观察数据的整体变化趋势
plot(mouse.data$weight, mouse.data$size)


注:lm()线性回归中,R中默认添加截距和斜率参数故构建的模型

size~weight,详细展开,即为:

size=y-intercept(截距)+slope(斜率)x weight
然后R使用最小二乘法与原理求出残差平方和最小的拟合直线参数,包括截距和斜率。
# 第三步:创建线性回归模型,即进行线性回归
mouse.regreSSion <- lm(size ~ weight, data=mouse.data)
## 对模型进行汇总
summary(mouse.regreSSion)

# Call:(展示已构建的模型)
#   lm(formula = size ~ weight, data = mouse.data)

# Residuals:(依次展示残差的最小值、四分位数、最大值)
#     Min      1Q  Median      3Q     Max 
# -1.5482 -0.8037  0.1186  0.6186  1.8852 

# Coefficients:(展示模型中的参数的估计值,标准误,统计检验t值,统计检验的p值)
#             Estimate Std. Error t value Pr(>|t|)  
# (Intercept)   0.5813     0.9647   0.603   0.5658  
# weight        0.7778     0.2334   3.332   0.0126 *
#   ---
#   Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1 (标记显著性水平对应的符号)

# Residual standard error: 1.19 on 7 degrees of freedom(残差标准误与自由度)
# Multiple R-squared:  0.6133, Adjusted R-squared:  0.558 (模型的R方与校正的R方)
# F-statistic:  11.1 on 1 and 7 DF,  p值: 0.01256(模型总体的F检验,F值,p值)

模型汇总结果解读:

  • 对构建模型整体的判定: 该模型的R2=0.6133(因为该模型为简单线性模型,故我们关注未校正的自由度即可),p值= 0.01256。故我们可以认为基于小鼠的体重可以较好的预测小鼠的体积。

  • 对模型中参数的判定:

    • 截距:对应的估计值为0.5813,p值=0.5658。因为我们通常不关注斜率,故不论其是否有意义均可
    • weight的斜率:对应的估计值为0.7778,p值=0.0126。
    • 注意:因为该模型为简单线性模型,故对斜率的检验结果与对模型整体的检验结果等价,p值相等且有显著意义。
# 第四步:将拟合的直线添加至散点图中
abline(mouse.regreSSion, col="red")

4. 多重线性回归 in R,数据来源与原视频

# 第一步:导入数据。在简单线性回归的数据的基础上,添加小鼠尾长的数据。探究小鼠尾长与小鼠重量预测小鼠体积的多重线性回归模型
mouse.data <- data.frame(
  size = c(1.42.61.03.75.53.23.04.96.3),
  weight = c(0.91.82.43.53.94.45.15.66.3),
  tail = c(0.71.30.72.03.63.02.93.94.0))

# 第二步:绘制散点图,观察数据的变化趋势
plot(mouse.data)
# 第三步:构建多重线性回归模型,即进行多重线性回归
multiple.regreSSion <- lm(size ~ weight + tail, data=mouse.data)
#在R中,lm()中构造的模型size~ weight + tail,对应的详细模为:
#Size=y-intercept +slope1(斜率1) x weight + slope2(斜率2) x tail

summary(multiple.regreSSion)
## 对模型进行汇总(仅展示与简单线性回归模型有区别的结果解读)
# Call:
#   lm(formula = size ~ weight + tail, data = mouse.data) 

# Residuals:
#      Min       1Q   Median       3Q      Max 
# -0.99928 -0.38648 -0.06967  0.34454  1.07932 

# Coefficients:
#             Estimate Std. Error t value Pr(>|t|)  
# (Intercept)   0.7070     0.6510   1.086   0.3192  
# weight       -0.3293     0.3933  -0.837   0.4345 (p值>0.05,说明含有体重较不含体重的模型无显著优势)
# tail          1.6470     0.5363   3.071   0.0219 *(p值<0.05,说明含有尾长较不含尾长的模型有预测优势)
#   ---
#   Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

# Residual standard error: 0.8017 on 6 degrees of freedom(展示模型的自由度和残差)
# Multiple R-squared:  0.8496, Adjusted R-squared:  0.7995(多变量模型更应关注校正的R方) 
# F-statistic: 16.95 on 2 and 6 DF,  p值: 0.003399(对模型的整体F检验和P值)

多重回归模型汇总结果解读:

  • 对构建模型整体的判定: 该模型的校正R2=0.7995(因为该模型为多重线性模型,故我们需要关注校正的自由度),p值= 0.003399。故我们可以认为基于小鼠的体重和尾长,可以较好的预测小鼠的体积。

  • 对模型中参数的判定:

    • 截距:应的计值为0.7070,p值=0.3192。因为我们通常不关注斜率,故不论其是否有意义均可。

    • weight的斜率:的估计值为-0.3293,p值=0.4345。意味着,将含有weight的多重线性模型与含weight的简单线性模型进行比较, 该多重线性模型的预测效果并不优于简单线性模型。

    • tail的斜率:对应的估计值为1.6470,p值0.0219(具有显著性)。意味着,将含有tail的多重线性模型与不含tail的简单线性模型进行比较, 该多重线性模型的预测效果优于简单线性模型。

    • 注意:因为该模型为多重线性模型,故对斜率的检验结果与对模型整体的检验结果不等价,我们更应该关注模型中各个参数的检验结果。

结果:基于以上讨论,如果我们想要节省时间和金钱,也许我们只需要测量小鼠尾长以预测小鼠体积。

5.小结

这一小节,我们将理论知识运用到实际案例解读中,主要内容是跟着视频中的示例进行操作,并学习了拟合模型的结果解读。

参考视频: 

1.https://www.youtube.com/watch?v=zITIFTsivN8&list=PLblh5JKOoLUIzaEkCLIUxQFjPIlapw8nU&index=3

2.https://www.youtube.com/watch?v=u1cc1r_Y7M0&list=PLblh5JKOoLUIzaEkCLIUxQFjPIlapw8nU&index=6

3.https://www.youtube.com/watch?v=hokALdIst8k&list=PLblh5JKOoLUIzaEkCLIUxQFjPIlapw8nU&index=7



编辑:吕琼

校审:罗鹏



继续滑动看下一个
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存